
local function test_call()
    local function Call(env)
        return setmetatable({}, {
            __index = env,
            __call = Call,
        });
    end

    local env1 = Call({env1 = true});
    local env2 = env1();
    env2.env2 = true;
    local env3 = env2()
    env3.env3 = true;
    print("env3", env3.env1, env3.env2, env3.env3);
    print("env2", env2.env1, env2.env2, env2.env3);
    print("env1", env1.env1, env1.env2, env1.env3);
end